When building Internet-enabled software applications, such as web applications, it is desirable to minimize the network traffic and amount of workload performed on the client, as the client device is typically of limited processing power, at least with respect to the processing power of a server or servers. Web application frameworks often opt for a stateless approach to keep the coupling between front-end and backend implementations as minimal as possible. This is also enforced by the underlying protocol (commonly, HyperText Transfer Protocol, or HTTP) and the notion of a RESTful web-service. Representational State Transfer (REST) is an architectural style used for web development designed for fast performance, reliability, and the ability to scale. To achieve these goals, developers work with reusable components that can be managed and updated without affecting the system as a whole while it is running. One example of a stateless web-application framework supporting RESTful web-services is SAPUI5™ from SAP SE, of Walldorf, Germany. RESTful services are commonly implemented based on the OData protocol.
No matter how loosely the front-end and the backend are coupled, web applications still need to load data from the backend in order for it to be displayed. This is normally performed via web services. Since it is not feasible to load all data in one pass, due to size, network, and database load, a paging algorithm is utilized. A paging algorithm loads data points only as they are needed, as much as possible.
An issue that arises, however, is that paging algorithms are designed for list-based data, namely a sequential or non-sequential listing of data records or other items of data. Such naive paging algorithms are not feasible for hierarchical data structures. Such hierarchical data structures are useful for storing data that resides on multiple “levels”. For example, a group of information regarding musical bands may have a top level indicating the genre of the band, then a second level indicating the sub-genre of the band, and then a lower level indicating the band name. While this type of organization is useful for hierarchical-based navigation (e.g., where the user wishes to explore bands in certain genres or sub-genres, he or she can select the genre first, then see a list of sub-genres within the genre, then select on a sub-genre and see a list of bands in the sub-genre), it creates a technical problem for naive paging algorithms.